NAND Flash is presently a prominent solid-state memory non volatile technology, and the use of solid-state drives (SSD) is expanding.
In Flash, the charge level of a cell can only be raised. As long as one makes changes to the data of a given page such that the level of any cell either remains unchanged or is raised, in-place updates are possible. Once the desired data cannot be written to its page, the page is retired for subsequent erasure and reuse, and the data is written elsewhere. Erasure can only be carried out in bulk (multi-page blocks). Moreover, the number of erasure cycles (endurance) is limited.
While SSD offer higher performance and other advantages over mechanical magnetic hard disk drives (HDD), their per-bit cost is still much higher [1, 2, 3], making cost reduction important.
The state of the art may be provide din the following references:    [1] J. Cooke, “Flash memory technology direction”, In Proceedings of the Windows Hardware Engineering Conference (WinHEC), 2007.    [2] J. Brewer et-al., “Nonvolatile Memory Technologies with Emphasis on Flash”, IEEE Press Ser. on Microelec. Sys., Chap. 1, 2008.    [3] S. Rizvi, T. Chung, “Flash SSD vs. HDD: High performance oriented modern embedded and multimedia storage systems”, ICCET, 2010.    [4] K. Prall, “Scaling non-volatile memory below 30 nm”, In Non-Volatile Semiconductor Memory Workshop (NVSMW), pages 5-10, 2007    [5] C. Trinhlet-al, “13.6 A 5.6 MB/s 64 Gb 4 b/Cell NAND Flash Memory in 43 nm CMOS”, in IEEE International Solid-State Circuits Conference (ISSCC) 2009.    [6] Samsung Electronics, “K9NBG08U5M 4 Gb*8 Bit NAND Flash Memory Data Sheet”.    [7] Samsung Electronics, “K9GAG08U0M 2 Gb*8 Bit NAND Flash Memory Data Sheet”.    [8] Laura M. Grupp et-al., “The Bleak Future of NAND Flash Memory”, Proceedings of the 10th USENIX conference on file and storage technologies, 2012.    [9] Laura M. Grupp, Adrian M. Caulfield, Joel Coburn, Steven Swanson, “Characterizing Flash Memory: Anomalies, Observations, and Applications”, Micro'09.    [10] R. L. Rivest and A. Shamir, “How to reuse a write-once memory,” Infor-mation and Control, vol. 55, pp. 1-19, December 1982.    [11] J. K. Wolf, A. D. Wyner, J. Ziv, and J. Korner, “Coding for a write-once memory,” AT&T Bell Labs. Tech. J., vol. 63, no. 6, pp. 1089-1112, 1984.    [12] S. Kayser, E. Yaakobi, P. H. Siegel, A. Vardy, and J. K. Wolf, “Multiplewrite WOM-codes,” Proc. 48-th Annual Allerton Conference on Communication, Control and Computing, Monticello, Ill., September 2010.    [13] E. Yaakobi, S. Kayer, P. H. Siegel, A. Vardy and J. K. Wolf, “Codes for Write-Once Memories”, to appear in IEEE Trans. on Information Theory.    [14] G. D. Cohen, P. Godlewski, and F. Merkx, “Linear binary code for write-once memories,” IEEE Trans. IT, vol. 32(5), pp. 697-700, September 1986.    [15] A. Jiang and J. Bruck, “Joint coding for flash memory storage,” Proc. IEEE Intrnl Symp. on Info. Theo., pp. 1741-1745, Toronto, July 2008.    [16] A. Jiang, “On The Generalization of Error-Correcting WOM Codes”, IEEE International Symposium on Information Theory (ISIT), pp. 1391-1395, 2007.    [17] A. Jiang, V. Bohossian, and J. Bruck, “Floating codes for joint information storage in write asymmetric memories,” in Proc. 2007 IEEE Int. Symp. Information Theory (ISIT2007), Nice, France, June 2007, pp. 1166-1170.    [18] A. Jiang, R. Mateescu, M. Schwartz and J. Bruck, “Rank Modulation for Flash Memories”, IEEE Transactions on Information Theory, vol. 55, 2009.    [19] L.-P. Chang. On efficient wear leveling for large-scale flash memory storage systems. In SAC '07: Proceedings of the 2007 ACM symposium on Applied computing, 2007    [20] S. Lee, K. Ha, K. Zhang, J. Kim, and J. Kim, “FlexFS: A Flexible Flash File System for MLC NAND Flash Memory”, Proceedings of the USENIX Annual Technical Conference, 2009.    [21] Y. Zhang, L. P. Arulraj, A. Arpaci-Dusseau, and R. ArpaciDusseau. “De-indirection for flash-based SSDs with nameless writes”. In FAST, 2012.    [22] F. Chierichetti, H. Finucane, Z. Liu, and M. Mitzenmacher. “Designing floating codes for expected performance”. IEEE Allerton, 2008.    [23] H. Kamabe, “Floating codes with good average performance”, in Proc. IEEE International Symposium on Information Theory and its applications (ISITA) 2009.    [24] H. Finucane and M. Mizenmacher, “Worst-case and average-case floating codes for flash memory,” Harvard University, 2009.    [25] R. Suzuki, T. Wadayama, “Layered Index-less Indexed Flash Codes for Improving Average Performance”, in Proc. IEEE International Symposium on Information Theory (ISIT), 2011.    [26] A. Berman, Y. Birk, “Probabilistic Performance of Write-Once Memory with Linear WOM codes—Analysis and Insights”, IEEE Allerton, 2012.    [27] Y. Wu, “Low Complexity Codes for Writing a Write-Once Memory”. Proc. IEEE Info. Theo. Symp. (ISIT) 2010.    [28] Y. Cassuto, M. Schwartz, V. Bohossian, and J. Bruck, “Codes for multilevel flash memories: correcting asymmetric limited-magnitude errors”, Proc. IEEE Info. Theo. Symp. (ISIT), 2007.